package com.asa.control_theory;

public class E {
	/**
	 * 
	 * 稳定性		李雅普诺夫
	 * 
	 * 		非常重要的一点，如果需要系统是稳定的，首先需要系统是可控的
	 * 
	 * 	严格的数学定义：
	 * 		对于任意：V
	 * 		存在一个：Ξ
	 * 		摸：范数，欧几里得空间的距离：||·||		||x|| = Math.sqrt(x1*x1 + x2*x2 + x3*x3 ... +xn*xn)
	 * 		
	 * 
	 *	 	V t9, V ε>0		Ξσ(t0,ε) 	||v(t0)|| < σ(t0,ε)  ==> t>t0  ||v(t)||<ε
	 * 
	 * 		
	 * 		V σ(t0) >0 : ||v(t0)|| < σ(t0) ==> lim(t→∞) ||v(t)|| = 0
	 * 
	 * 		
	 * 		也就是说，时间的无穷大会使得最终回到的点就是平衡点
	 * 
	 * 
	 * 
	 * 		对于一个线性系统来说
	 * 			X` = A*X
	 * 			
	 * 			A的特征值	λ = a + b*i			对于所有的a
	 * 			所有a <= 0时		是稳定的
	 * 			所有a < 0时		是渐进的
	 * 			存在a > 0时		是不稳定的
	 * 
	 * 
	 * 	
	 * 
	 * 		非线性系统中：
	 * 			直接方法：		解偏微分方程
	 * 				x` = f(x0)
	 * 
	 * 			第二方法：		李雅普诺夫
	 * 				x=0是平衡点
	 * 
	 * 		
	 * 
	 * 		线性的一个例子，如图control_theory-E01.png
	 * 
	 * 		非线性的一个例子，如图control_theory-E02.png
	 * 			这个图中比较难的是如何寻找正确的V
	 * 
	 * 
	 */

	
	
	
	
	/**
	 * 
	 * 线性控制器的设计
	 *		Open loop（开环）
	 *		 		X` = A*X	中A的特征值λi 将决定系统的表现，稳定性
	 * 	
	 * 		close loop（闭环）	
	 * 				X` = A*X + B*u		u=-k*X
	 * 				===》	X` = A*X - B*k*X =  (A - B*k)*X 
	 * 
	 * 
	 * 
	 * 		例子：
	 * 			X` = {{0,2}，
	 * 				{0,3}} * X + 
	 * 				{{0},
	 * 				{1}} * u
	 * 			
	 * 			开环的情况：
	 * 				|λ*I - A|=0
	 * 				==> λ1 = 0 ,λ2 = 3
	 * 				由于λ2>0 所以它不稳定
	 * 			闭环的情况				其实这个u = -k*X，让我有点不爽，它给到我的时候是一个结论，而没有原理，即我不知道为什么可以这么做（我有一个直观上的理解，就是输入可以装换成X）
	 * 				u = -k*X = {-k1,-k2} * X
	 * 				X` = {{0,2}，
	 * 				{0,3}} * X + 
	 * 				{{0},
	 * 				{1}} * 
	 * 				{-k1,-k2} * X
	 * 				= {{0,2}，
	 * 				{0,3}} * X + 
	 * 				{{0,0}，
	 * 				{-k1,-k2}} * X 
	 * 				={{0,2}，
	 * 				{-k1,3-k2}} * X 
	 * 
	 * 				这样我们可以选择合适的k1和k2
	 * 				使得 λ1 = λ2 = -1
	 * 
	 * 			
	 * 				|λ*I - A|=0
	 * 				{λ,2}，
	 * 				{-k1, λ - 3 + k2}} = 0
	 * 			
	 * 				==> λ*λ + (k2 - 3) * λ + 2 *k1 =0		----- 	λ*λ + 2 * λ + 1 = 0
	 * 				可得
	 * 				k1 =1/2		k2 = 5
	 * 				那么
	 * 				u = {-1/2 , 5} *
	 * 					{{x1},
	 * 					{x2}}
	 * 
	 * 
	 * 			对于我们如何选取λ 
	 * 				·λ 选择为虚数，则一定存在共轭  λ = a ± b*i
	 * 				·λ 选择为虚数 =》 振动
	 * 				·λ 决定收敛速度		C1* Math.exp(λ1 * t ) + C2* Math.exp(λ2 * t ) ...
	 * 				·考虑u，涉及到输入的能量问题，最优化控制 LQR控制器
	 * 			
	 * 		
	 * 		例子2：
	 * 			X` = {{2,0}，
	 * 				{1,1}} * X + 
	 * 				{{1},
	 * 				{1}} * u
	 * 
	 * 
	 * 			闭环==>
	 * 			X` = {{2 - k1,-k2}，
	 * 				{1-k1,1-k2}} * X
	 * 
	 * 			|λ*I - A*u| = 0 
	 * 			==>	λ*λ + (-3 + k1 + k2) * λ + 2 - k1 - k2 = 0 = λ*λ + 2 * λ + 1
	 * 				-3 + k1 + k2 = 2		
	 * 				2 - k1 - k2 = 1
	 * 			此时会发现k1 和 k2是无解的
	 * 			为什么会这样呢？ 		因为控制矩阵是非满秩的，即系统是非可控的
	 * 
	 * 		
	 * 
	 * 		
	 * 		
	 * 
	 * 
	 * 
	 */
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
}
